package main

import "fmt"

func main() {
	//1、定义float类型
	//var a float32 = 3.12
	//fmt.Printf("值：%v--%f，类型%T \n", a, a, a) //值：3.12，类型float32
	//
	//fmt.Println(unsafe.Sizeof(a))	//float32占用4个字节

	//var b float64 = 3.12
	//fmt.Printf("值：%v--%f，类型%T \n", b, b, b) //值：3.12，类型float32
	//
	//fmt.Println(unsafe.Sizeof(b)) //float64占用8个字节

	//2、%f输出float类型 %.2f输出数据的时候保留两位小数
	//var c float64 = 3.14159265358979323846
	//fmt.Printf("%v-----%.2f", c, c) //%.2f保留2位小数输出
	//fmt.Printf("%.4f", c) //%.4f保留4位小数输出

	//3、64位的系统中Go语言中浮点数默认是float64
	//f1 := 3.14
	//fmt.Printf("%f--%T", f1, f1)

	//4、Golang科学计数法表示浮点类型
	//var f2 float32 = 3.14e2	//表示f2等于3.14*10的2次方
	//fmt.Printf("%f--%T", f2, f2)

	//var f3 float32 = 3.14e-2	//表示f3等于3.14除以10的2次方
	//fmt.Printf("%f--%T", f3, f3)

	//5、Golang中float精度丢失问题
	//var f4 float64 = 1129.6
	//fmt.Println(f4 * 100) //112959.99999999999
	//
	//m1 := 8.2
	//m2 := 3.8
	//fmt.Println(m1 - m2) //4.3999999999999995
	//
	////利用github.com/shopspring/decimal包来进行浮点型运算
	//var num1 float64 = 3.1
	//var num2 float64 = 4.2
	//var d1 = decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(num2))
	//fmt.Println(d1)

	//6、int类型转换成float类型
	//a := 10
	//b := float64(a)
	//fmt.Printf("a的类型是：%T \n", a)
	//fmt.Printf("b的类型是：%T \n", b)

	//7、float转换成int类型
	//var a1 float32 = 23.4
	//var a2 float64 = float64(a1)
	//fmt.Printf("a1的类型是%T，a2的类型是%T", a1, a2)

	//8、float转换成int类型
	var c1 float32 = 23.45
	c2 := int(c1)
	fmt.Printf("c2的值是：%v，c2的类型%T \n", c2, c2)
}
